home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_03_03 / 3n03025a < prev    next >
Text File  |  1992-02-07  |  1KB  |  43 lines

  1. #pragma pack(1)         // leave no extra spaces
  2.  .
  3.  .
  4. Play_packet   plpack;   // request packet
  5. unsigned long start;    // starting sector
  6. unsigned long end;      // end sector
  7. void (_far *strategy)();     // strategy entry
  8. void (_far *intrpt)();       // interrupt entry
  9. unsigned char unit;     // sub-unit ID
  10.   .
  11.   .
  12. plpack.p_rh.rh_lth = sizeof plpack; // total lth
  13. plpack.p_rh.rh_sub_unit = unit;
  14. plpack.p_rh.rh_cc = 132;            // call code
  15. plpack.p_amode = 0;                 // high sierra mode
  16. plpack.p_start = start;
  17. plpack.p_numb = end - start;
  18. call_driver(&plpack, strategy, intrpt);  // request play
  19. if (plpack.p_rh.rh_stat & 0x8000)
  20.       { /* error on play */ }
  21. else
  22.       { /* play started OK */ }
  23.   .
  24.   .
  25. void call_driver(void *pp,
  26.                  void (_far *strat)(),
  27.                  void (_far *intr)())
  28. {
  29. unsigned long call_strat = (unsigned long) strat;
  30. unsigned long call_intr  = (unsigned long) intr;
  31. unsigned int packet = (unsigned int) pp;
  32.  
  33. _asm {
  34.      push  ds
  35.      pop   es
  36.      mov   bx,packet           // point es:bx to packet
  37.      call  far ptr call_strat  // call strategy entry
  38.      call  far ptr call_intr   // call interrupt
  39.      }
  40. }
  41. /* End of File */ 
  42.  
  43.